#include <iostream>
#include <vector>
#include <string>
#include <cstddef>
#include <iterator>
#include <ctime>
#include <cstdlib>

// 比较两个数组是否相等
int equalArr()
{
    const int sz = 5; // 常量sz作为数组的维度
    int a[sz], b[sz], i; 
    srand((unsigned)time(NULL)); // 生成随机数种子
    // 通过for循环为数组元素赋值
    for(i = 0; i < sz; i++)
    {
        // 每次循环生成一个10以内的随机数并添加到a中
        a[i] = rand() % 10;
    }
    std::cout << "系统数据已经生成，请输入您猜测的5个数字(0~9),可以重复： " << std::endl;
    int uVal;
    // 通过for循环为数组元素赋值
    for(i = 0; i < sz; i++)
    {
        if(std::cin >> uVal)
        {
            b[i] = uVal;
        }
    }
    std::cout << "系统生成的数据是： " << std::endl;
    for(auto val : a)
    {
        std::cout << val << " ";
    }
    std::cout << std::endl;
    std::cout << "您猜测的数据是： " << std::endl;
    for(auto val : b)
    {
        std::cout << val << " ";
    }
    std::cout << std::endl;    

    int *p = std::begin(a), *q = std::begin(b);
    while(p != std::end(a) && q != std::end(b))
    {
        if(*p != *q)
        {
            std::cout << "您的猜测错误，两个数组不相等：" << std::endl;
            return -1;
        }
        p++;
        q++;
    }
    std::cout << "恭喜您全都猜对了！" << std::endl;
    return 0;
}
// 比较两个vector是否相等
int equalVector()
{
    const int sz = 5;
    std::vector<int> v1, v2;
    srand((unsigned)time(NULL));

    // 通过for循环为v1向量元素赋值
    for(int i = 0; i != sz; i++)
    {
        v1.push_back(rand() % 10);
    }
    std::cout << "向量数据已经生成，请输入您猜测的5个数：" << std::endl;
    // 通过for循环为v2向量元素赋值
    int uVal;
    for(int i = 0; i != sz; i++)
    {
        while(std::cin >> uVal)
        {
            v2.push_back(uVal);
        }
    }
    std::cout << "系统生成的向量数据是: " << std::endl;
    for(auto val : v1)
    {
        std::cout << val << " ";
    }
    std::cout << std::endl;
    std::cout << "您猜测的数据是: " << std::endl;
    for(auto val : v2)
    {
        std::cout << val << " ";
    }
    std::cout << std::endl;
    // 比较v1和v2对象的元素
    auto it1 = v1.cbegin(), it2 = v2.cbegin();
    while(it1 != v1.cend() && it2 != v2.cend())
    {
        if(*it1 != *it2)
        {
            std::cout << "您的猜测错误，两个向量不相等" << std::endl;
            return -1;
        }
        it1++;
        it2++;
    }
    std::cout << "恭喜您全部猜对了！" << std::endl;
    return 0;
}

int main()
{
    // equalArr();
    equalVector();
    return 0;
}